/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;
import controladores.EstadoUsuarioFacadeLocal;
import controladores.RolFacadeLocal;
import controladores.SupervisorXEntidadFacadeLocal;
import entidades.Entidad;
import entidades.EstadoUsuario;
import entidades.SupervisorEntidad;
import entidades.SupervisorXEntidad;
import entidades.SupervisorXEntidadPK;
import entidades.Usuario;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import negocio.EntidadInterface;
import negocio.EstadoUsuarioInterface;
import negocio.SupervisorEntidadInterface;
import negocio.SupervisorXEntidadInterface;
import negocio.UsuarioInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class CargueSupervisorEntidadBean {
    
    private SupervisorEntidad supervisorEntidad = new SupervisorEntidad();
    private Entidad entidad;
    private EntidadInterface entidadInterface;
    private List<Entidad> listaEntidades;
    private String entidadSelected;
    private SupervisorXEntidad supervisorXEntidad = new SupervisorXEntidad();
    @EJB
    private SupervisorEntidadInterface supervisorEntidadInterface;
    @EJB
    private UsuarioInterface usuarioInterface;
    private Usuario usuario;
    @EJB
    private EstadoUsuarioInterface estadoUsuarioInterface;
    private List<EstadoUsuario> listaEstadosUsuario;
    private String estadoUsuarioSelected;
    @EJB
    private EstadoUsuarioFacadeLocal estadoUsuarioFacadeLocal;
    @EJB
    private RolFacadeLocal rolFacadeLocal;
    private Integer ROL = 4;
    @EJB
    private SupervisorXEntidadFacadeLocal supervisorXEntidadFacadeLocal;
    @EJB
    private SupervisorXEntidadInterface supervisorXEntidadInterface;
    private boolean VISIBLE_ENTIDAD = true;
    

    public CargueSupervisorEntidadBean(){
        
    }
    
    @PostConstruct
    public void inicializarVariables() {
        usuario = new Usuario();
        try {
            InitialContext ctx = new InitialContext();            
            //Se debe tener en cuenta el @Remote en la interface para que no se genere ERROR
            //cargando la lista
            entidadInterface = (EntidadInterface) ctx.lookup("EntidadEJB"); 
            listaEntidades = entidadInterface.listarEntidadesVisibles(VISIBLE_ENTIDAD);
            
            InitialContext ctx1 = new InitialContext();
            estadoUsuarioInterface = (EstadoUsuarioInterface) ctx.lookup("EstadoUsuarioEJB");
            listaEstadosUsuario = estadoUsuarioInterface.listarEstadosdUsuario();
        } catch (NamingException ex) {
            Logger.getLogger(FResumenSemPracticaProf.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }
    
    public void guardarSupervisorEntidad(){
        System.out.println("entra al metodo de guiardar-------------------------");
        try {
            usuario.setIdUsuario(supervisorEntidad.getIdSupervisorEntidad());
            usuario.setIdEstado(estadoUsuarioFacadeLocal.consultarEstado(Integer.parseInt(estadoUsuarioSelected)));
            usuario.setIdRol(rolFacadeLocal.consultarRol(ROL));
            usuario.setClave(supervisorEntidad.getIdSupervisorEntidad().toString());
            //supervisorXEntidad.setFechaAsignacion();
            System.out.println("--------        clave del usuario");
            supervisorXEntidad.setSupervisorEntidad(supervisorEntidad);
            supervisorXEntidad.setEntidad(new Entidad(Integer.parseInt(entidadSelected)));
            supervisorXEntidad.setSupervisorXEntidadPK(new SupervisorXEntidadPK(Integer.parseInt(entidadSelected), supervisorEntidad.getIdSupervisorEntidad()));
            supervisorXEntidad.setFechaAsignacion(new Date());
            usuarioInterface.crear(usuario, supervisorEntidad, supervisorXEntidad);
            FacesMessage facesMessage = new FacesMessage("Datos Guardados con exito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            limpiarCampos();
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    public void limpiarCampos(){
        entidadSelected = "";
        supervisorEntidad = null;
        estadoUsuarioSelected = "";            
    }
    
    public SupervisorEntidad getSupervisorEntidad() {
        return supervisorEntidad;
    }

    public void setSupervisorEntidad(SupervisorEntidad supervisorEntidad) {
        this.supervisorEntidad = supervisorEntidad;
    }

    public List<Entidad> getListaEntidades() {
        return listaEntidades;
    }

    public void setListaEntidades(List<Entidad> listaEntidades) {
        this.listaEntidades = listaEntidades;
    }

    public SupervisorEntidadInterface getSupervisorEntidadInterface() {
        return supervisorEntidadInterface;
    }

    public void setSupervisorEntidadInterface(SupervisorEntidadInterface supervisorEntidadInterface) {
        this.supervisorEntidadInterface = supervisorEntidadInterface;
    }

    public Entidad getEntidad() {
        return entidad;
    }

    public void setEntidad(Entidad entidad) {
        this.entidad = entidad;
    }

    public String getEntidadSelected() {
        return entidadSelected;
    }

    public void setEntidadSelected(String entidadSelected) {
        this.entidadSelected = entidadSelected;
    } 

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public List<EstadoUsuario> getListaEstadosUsuario() {
        return listaEstadosUsuario;
    }

    public void setListaEstadosUsuario(List<EstadoUsuario> listaEstadosUsuario) {
        this.listaEstadosUsuario = listaEstadosUsuario;
    }

    public String getEstadoUsuarioSelected() {
        return estadoUsuarioSelected;
    }

    public void setEstadoUsuarioSelected(String estadoUsuarioSelected) {
        this.estadoUsuarioSelected = estadoUsuarioSelected;
    }
    
    
}
